home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 42
/
Amiga Format AFCD42 (Issue 126, Aug 1999).iso
/
-serious-
/
hardware
/
blizkick
/
modules
/
replace.asm
< prev
next >
Wrap
Assembly Source File
|
1999-05-17
|
2KB
|
120 lines
; FILE: Source:modules/Replace.ASM REV: 12 --- Replacing Module for BlizKick
;
; Example BlizKick Module
; ~~~~~~~~~~~~~~~~~~~~~~~
; This code shows how to create replacing BlizKick "Module".
; Should be quite self-explonary... (?)
;
; !CODE MUST BE FULLY PC-RELATIVE!
;
; Written by Harry Sintonen.
; This source code is Public Domain.
;
incdir "include:"
include "exec/execbase.i"
include "blizkickmodule.i" ; Some required...
_LVORawDoFmt EQU -$20A
_LVOOpenLibraryTagged EQU -$32A
_LVOTimedDisplayAlert EQU -$336
_LVOCloseLibrary EQU -$19E
SECTION MODULE,CODE
_DUMMY_LABEL
BK_MOD BKMF_ReplaceMode!BKMF_ExtResBuf,_end,(RTF_COLDSTART)<<24+39<<16+NT_UNKNOWN<<8+$C9,_name,_name,_init
; Replace mode on, requires EXTRESBUF buffer, COLDSTART module, requires KS V39.x or better,
; module type NT_UNKNOWN, priority -55.
STACKBUF EQU 200
_init clr.l (0).W
movem.l d2/d7/a2/a3/a6,-(sp)
move.l (LastAlert,a6),d2
moveq #-1,d0 ; Display no alert?
cmp.l d0,d2
beq.b .exit
lea (-STACKBUF,sp),sp
move.l sp,a3
lea (SoftFail,pc),a0
move.l d2,d0
swap d0
cmp.b #1,d0
bne.b .skip0
lea (NoMem,pc),a0
bra.b .skip1
.skip0 btst #$1F,d2
bne.b .skip1
tst.w d0
beq.b .skip1
lea (Recoverable,pc),a0
.skip1 bsr.b .dostr
lea (PressLeftie,pc),a0
bsr.b .dostr
clr.b (a3)+
lea (ErrorFmt,pc),a0
lea (LastAlert,a6),a1
lea (.PutChar,pc),a2
jsr (_LVORawDoFmt,a6)
.try moveq #3,d0 ; 3=intuition.library
jsr (_LVOOpenLibraryTagged,a6)
tst.l d0
beq.b .try ; crash!
move.l (LastAlert+3*4,a6),a1
move.l a6,a3
move.l d0,a6
move.l d2,d0
move.l sp,a0
moveq #40,d1
jsr (_LVOTimedDisplayAlert,a6)
move.l d0,a2
move.l a6,a1
move.l a3,a6
jsr (_LVOCloseLibrary,a6)
lea (STACKBUF,sp),sp
clr.l (0).W
moveq #-1,d0 ; No alert on next round, please!
move.l d0,(LastAlert,a6)
.exit move.l a2,d0
movem.l (sp)+,d2/d7/a2/a3/a6
rts
.dostr clr.b (a3)+
.copy move.b (a0)+,(a3)+
bne.b .copy
st (a3)+
rts
.PutChar move.b d0,(a3)+
clr.b (a3)
rts
_name dc.b 'alert.hook',13,10,0
NoMem dc.b 38,15
dc.b 'Not enough memory. ',0
SoftFail dc.b 38,15
dc.b 'Software Failure. ',0
Recoverable dc.b 38,15
dc.b 'Recoverable Alert. ',0
PressLeftie dc.b 234,15
dc.b 'Press left mouse button to continue.',0
ErrorFmt dc.b 142,30
dc.b 'Error: %04x %04x Task: %08lx',0
CNOP 0,2
_end
SECTION VERSION,DATA
dc.b '$VER: alert.hook_MODULE 1.1 (11.9.96)',0